package com.yc.baseapi.collection;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class TestList {
	
	private volatile List<String> beanDefinitionNames = new ArrayList<>(256);
	
	/**
	 * new ArrayList<>(256); 只是在防止扩容，并不改变size
	 */
	public void m1() {
		beanDefinitionNames.add("aa");
		System.out.println("beanDefinitionNames-size:" + beanDefinitionNames.size());
		List<String> beanNames = new ArrayList<>(this.beanDefinitionNames);
		System.out.println("beanNames-size:" + beanNames.size());
		
	}
	
	/**
	 * 起两个线程：一个往beanDefinitionNames添加数据，另外一个删数据数据，主线程循环
	 */
	public void m2() {
		Thread t1 = new Thread(()->{
			for (int i = 0; i < 256; i++) {
				System.out.println("+" + i + ": " + beanDefinitionNames.add(i+""));
			}
		});
		
		Thread t2 = new Thread(()->{
			for (int i = 0; i < 256; i++) {
				System.out.println("-" + i + ": " + beanDefinitionNames.remove(i+""));
			}
		});
		
		System.out.println("------start--------");
		t1.start();
		t2.start();
		try {
			t1.join();
			t2.join();
			System.out.println("beanDefinitionNames.size: " + beanDefinitionNames.size());
			System.out.println("------over--------");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		
		
	}
	
	public void testLinkList() {
		LinkedList<String> list = new LinkedList<String>();
		list.add("a");
		list.add("b");
		list.add("c");
//		for (int i = 0; i < list.size(); i++) {
//			System.out.println(list.get(i));
//		}
		
		for (String str : list) {
			System.out.println(str);
		}
	}



	public static void main(String[] args) {
		TestList tl = new TestList();
//		tl.m1();
//		tl.m2();
		tl.testLinkList();

	}

}
